﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using BUS;
namespace DichVuQuan4
{
    public partial class ajaxActions : System.Web.UI.Page
    {
        DataTable dt;
        string page;
        string strpart;
        /// <summary>
        /// Đưa vào 1 Datatable trả ra một chuỗi HTML 
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        private string returnCodeHTML(DataTable dt)
        {
            string strHTML = "<ul>";

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                
                string TenDiaDiem = dt.Rows[i]["TenDiaDiem"].ToString();
                string TenDuong = dt.Rows[i]["TenDuong"].ToString();
                string TenPhuong = dt.Rows[i]["TenPhuong"].ToString();
                string TenQuanHuyen = dt.Rows[i]["TenQuanHuyen"].ToString();

                strHTML += "<li onclick=\"set_map(" + dt.Rows[i]["ViDo"].ToString() + "," + dt.Rows[i]["KinhDo"].ToString() + "," + "'" + TenDiaDiem + "');\">";
                strHTML += "<strong>" + TenDiaDiem + "</strong><br />";
                strHTML += "<small>" + dt.Rows[i]["SoNha"].ToString() + " " + TenDuong + ", Phường " + TenPhuong + ", Quận " + TenQuanHuyen + "</small><br />";
                //strHTML += "<small>" + dt.Rows[i]["ChuThich"].ToString() + "</small>";
                strHTML += "</li>";
            }
            strHTML += "</ul>";
            return strHTML;
        }

        /// <summary>
        /// Lên - Dùng để phân trang cho kết quả trả về
        /// </summary>
        /// <param name="curentDatatable"></param>
        /// <param name="skip"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        private DataTable getPage(DataTable curentDatatable, int skip, int page)
        {
            DataTable dt = null;
            //DataTable temp = dt.AsEnumerable().Skip(skip).Take(8).CopyToDataTable();
            dt = curentDatatable.AsEnumerable().Skip(skip).Take(8).CopyToDataTable();
            return dt;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            //string page = Request.QueryString["trang"];
            //string strpart = Request.QueryString["part"];

            page = Request.QueryString["trang"];
            strpart = Request.QueryString["part"];
            int skip;   // Lấy từ x đến
            int getTo = 8;  // Mặc định là lấy 8 record
            int trang;
            DataTable temp;
            if(page==null)
            {
                string cmd = Request.QueryString["cmd"];
                switch (cmd)
                {
                    case "search":
                        {
                            dt = new DataTable();
                            int intMaDichVu = -1;
                            if (!Request.QueryString["MaDichVu"].Equals("null"))
                            {
                                //intMaDichVu = int.Parse(Request.QueryString["MaDichVu"].ToString());
                                intMaDichVu = int.Parse(Request.QueryString["MaDichVu"]);
                            }
                            //optSelectedValue = intMaDichVu.ToString();
                            string TenDiaDiem = Request.QueryString["TenDiaDiem"];
                            string TenDuong = Request.QueryString["TenDuong"];
                            string TenPhuong = Request.QueryString["TenPhuong"];
                            string TenQuan = Request.QueryString["TenQuan"];
                            //string strFind = Request.QueryString["strFind"];

                            //keyword += findTenDichVuByMaDichVu(intMaDichVu) + strFind + "'";

                            // Lây Mã Địa Điểm theo Tên Địa Điểm nhập vào từ textbox
                            int intMaDiaDiem = -1;
                            if (!TenDiaDiem.Equals("null"))
                            {

                                string strMaDiaDiem = new DiaDiemBUS().getMaDiaDiemByTenDiaDiem(TenDiaDiem);
                                if (!strMaDiaDiem.Equals(""))
                                {
                                    intMaDiaDiem = int.Parse(strMaDiaDiem);
                                    // Nếu lúc này từ khóa có tìm thì mới hiển thị từ khóa
                                    //keyword += TenDiaDiem + ", ";
                                }
                            }

                            // Lấy Mã Đường theo Tên Đường nhập vào từ textbox
                            int intMaDuong = -1;
                            if (!TenDuong.Equals("null"))
                            {
                                string strMaDuong = new DuongBUS().getMaTenDuongByTenDuong(TenDuong);
                                if (!strMaDuong.Equals(""))
                                {
                                    intMaDuong = int.Parse(strMaDuong);
                                    // Nếu lúc này từ khóa có tìm thì mới hiển thị từ khóa
                                    //keyword += TenDuong + ", ";
                                }
                            }
                            // Lấy Mã Phường theo Tên Phường nhập vào từ textbox(chuỗi querystring)
                            int intMaPhuong = -1;
                            if (!TenPhuong.Equals("null"))
                            {
                                string strMaPhuong = new PhuongBUS().getMaTenPhuongByTenPhuong(TenPhuong);
                                if (!strMaPhuong.Equals(""))
                                {
                                    intMaPhuong = int.Parse(strMaPhuong);
                                }
                            }

                            // Lấy Mã Quận theo Tên Quận nhập vào từ textbox
                            int intMaQuan = -1;
                            if (!TenQuan.Equals("null"))
                            {
                                string strMaQuan = new QuanBUS().getMaQuanByTenQuan(TenQuan);
                                if (!strMaQuan.Equals(""))
                                {
                                    intMaQuan = int.Parse(strMaQuan);
                                    // Nếu lúc này từ khóa có tìm thì mới hiển thị từ khóa
                                    //keyword += TenQuan + ", ";
                                }
                            }

                            dt = new DuLieuBUS().getDulieuBy_DichVu_Duong_Quan(intMaDichVu, intMaDiaDiem, intMaDuong, intMaQuan);
                            if (dt.Rows.Count == 0)
                            {
                                Response.Write("<ul><li>Tìm không thấy dữ liệu</li></ul>");
                                return;
                            }

                            Session["data"] = dt;
                            skip = 0;   // Lấy từ x đến
                            trang = 1;
                            temp = getPage(dt, skip, getTo);
                            if (temp.Rows.Count > 0)
                            {
                                Response.Write(returnCodeHTML(temp));
                                string style = "display:none";
                                Session["style"] = style;
                                // Tính toán để phân trang cho kết quả trả về
                                int pages = dt.Rows.Count / 8;
                                
                                if (dt.Rows.Count % 8 != 0)
                                    pages += 1;
                                //string div = "<div class='result_foot'>&lt;&lt; ";
                                if (pages != 1)
                                {
                                    string div = "<div class='result_foot'>";
                                    if (pages <= 8)
                                    {
                                        for (int i = 0; i < pages; i++)
                                        {
                                            string p = (i + 1).ToString();
                                            //div += "<a href=\"#\" onclick='pageClick(" + p + ");'>" + p + "</a>"; //Default.aspx?trang=" + p + "
                                            div += "<a href=\"#\" onclick='pageClick(" + p + "," + "1" + ");'>" + p + "</a>";
                                        }
                                        //div += "&gt;&gt;<br /></div>";
                                    }
                                    else
                                    {
                                        div += "<a>Prev </a>";
                                        string p="";
                                        for (int i = 0; i < 8; i++)
                                        {
                                            p = (i + 1).ToString();
                                            //div += "<a href=\"#\" onclick='pageClick(" + p + ");'>" + p + "</a>"; //Default.aspx?trang=" + p + "
                                            div += "<a href=\"#\" onclick='pageClick(" + p + "," + "1" + ");'>" + p + "</a>";
                                        }
                                        div += "<a href=\"#\" onclick='partClick(" + p + "," + "2" + ");'> Netxt</a>";
                                    }
                                    div += "</div>";
                                    Response.Write(div);

                                }
                            }
                            else
                            {
                                Response.Write("<ul><li>Tìm không thấy dữ liệu</li></ul>");
                            }
                            break;
                        }// end case
                    case "search2":
                        {
                            // Đang nghiên cứu
                            int intMaDichVu = int.Parse(Request.QueryString["MaDichVu"].ToString());
                            string strKeyword = Request.QueryString["keyword"];
                            break;
                        }
                }
            }
            else
            {
                dt = (DataTable)Session["data"];
                skip = (int.Parse(Request.QueryString["trang"]) - 1) * getTo;   // (2-1)*8 = 8
                trang = int.Parse(Request.QueryString["trang"]);
                strpart = Request.QueryString["part"];
                int part = 0;
                if (strpart != null)
                {
                    part = int.Parse(strpart);
                }
                else
                {
                    part = 1;
                    trang = 0;
                }
                getTo = getTo * trang;  // 8 * 2= 16

                temp = getPage(dt, skip, getTo);

                if (temp.Rows.Count > 0)
                {
                    Response.Write(returnCodeHTML(temp));
                    int pages = dt.Rows.Count / 8;
                    if (dt.Rows.Count % 8 != 0)
                        pages += 1;
                    if (pages != 1)
                    {
                        string div = "<div class='result_foot'>";
                        if (pages <= 8)
                        {
                            for (int i = 0; i < pages; i++)
                            {
                                string p = (i + 1).ToString();
                                //div += "<a href=\"#\" onclick='pageClick(" + p + ");'>" + p + "</a>"; //Default.aspx?trang=" + p + "
                                div += "<a href=\"#\" onclick='pageClick(" + p + "," + "1" + ");'>" + p + "</a>";
                            }
                            //div += "&gt;&gt;<br /></div>";
                        }
                        else
                        {
                            string p = "";
                            div += "<a href=\"#\" onclick='partClick(" + p + "," + (part - 1) + ");'>Prev </a>";
                            for (int i = trang; i < part*8 ; i++)
                            {
                                p = (i + 1).ToString();
                                //div += "<a href=\"#\" onclick='pageClick(" + p + ");'>" + p + "</a>"; //Default.aspx?trang=" + p + "
                                div += "<a href=\"#\" onclick='pageClick(" + p + "," + part + ");'>" + p + "</a>";
                            }
                            
                            div += "<a href=\"#\" onclick='partClick(" + p + "," + (part+1) + ");'> Netxt</a>";
                        }
                        div += "</div>";
                        Response.Write(div);
                    }
                }
                else
                {
                    Response.Write("<ul><li>Tìm không thấy dữ liệu</li></ul>");
                }
                return;
            }
        }// end page_load
    }//end class
}// end namespce